from docx import Document
import openpyxl


def read_tables_from_docx(docx_path):
    # 打开 Word 文档
    doc = Document(docx_path)
    tables_data = []

    # 遍历文档中的所有表格
    for table in doc.tables:
        table_data = []
        for row in table.rows:
            row_data = [cell.text.strip() for cell in row.cells]  # 去除多余的空白
            table_data.append(row_data)
        tables_data.append(table_data)

    return tables_data


def write_tables_to_excel(tables_data, excel_path):
    # 创建一个新的 Excel 工作簿
    workbook = openpyxl.Workbook()

    # 遍历所有表格数据，并写入不同的工作表（可选）
    for sheet_index, table_data in enumerate(tables_data):
        if sheet_index > 0:
            # 如果不是第一个表，则添加新的工作表
            sheet = workbook.create_sheet(title=f'Table_{sheet_index + 1}')
        else:
            # 第一个表使用默认工作表
            sheet = workbook.active
            sheet.title = f'Table_{sheet_index + 1}'

        # 将表格数据写入工作表
        for row_index, row_data in enumerate(table_data, start=1):
            for col_index, cell_value in enumerate(row_data, start=1):
                sheet.cell(row=row_index, column=col_index, value=cell_value)

    # 删除默认创建的空工作表（如果只有一个表格且未重命名）
    if len(tables_data) == 1 and workbook.sheetnames[0] == 'Sheet':
        del workbook['Sheet']

    # 保存 Excel 文件
    workbook.save(excel_path)


# 使用示例
docx_path = 'text1.docx'  # 替换为你的 .docx 文件路径
excel_path = 'text1.xlsx'  # 输出的 Excel 文件路径

# 读取 Word 文档中的表格数据
tables_data = read_tables_from_docx(docx_path)

# 将表格数据写入 Excel 文件
write_tables_to_excel(tables_data, excel_path)
